from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC, wait
from selenium import webdriver
from selenium.webdriver.common.by import By



driver = webdriver.Firefox()
wait = WebDriverWait(driver, 20)
driver.get('http://sahitest.com/demo/index.htm')
# first_handle = driver.current_window_handle  # 将第一个句柄存到first中
# print(first_handle)
# driver.find_element(By.LINK_TEXT, 'Window Open Test').click()  # 打开新页面
# all_handles = driver.window_handles  # 存储所有句柄-列表
# print(all_handles)
#
# # 转换第二个页面
# sleep(2)
# driver.switch_to.window(all_handles[1])
# # 切换第一个frame,并且单击Link Test
# driver.switch_to.frame(0)
# driver.find_element(By.LINK_TEXT, 'Link Test').click()
# sleep(2)
# driver.quit()

# 其它方式切换窗口：
original_window = driver.current_window_handle   # 存储原始句柄
assert len(driver.window_handles) == 1      # 检查是否仅存在一个窗口
driver.find_element(By.LINK_TEXT, "Link Test").click()    # 打开新窗口
wait.until(EC.number_of_windows_to_be(2))    # 等待两个页面都打开

for window_handle in driver.window_handles:    # for循环
    if window_handle != original_window:        # 如果当前句柄和初始的不符
        driver.switch_to.window(window_handle)   # 那么就切换当前的页面
        break






